package com.amber.proyecto.envia.imagenes.sw.usuario;

import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import com.amber.proyecto.envia.imagenes.sw.Principal;
import com.amber.proyecto.envia.imagenes.sw.R;
import com.amber.proyecto.envia.imagenes.sw.utils.Cifrado;
import com.amber.proyecto.envia.imagenes.sw.utils.Variables;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class ActualizaContraUsu extends Activity{
	private Bundle bundle;

	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.actualizacontrausuario);
		bundle = getIntent().getExtras();
		
		Button btnActualizaCont = (Button)findViewById(R.id.btnActualizaContUsu);
		btnActualizaCont.setOnClickListener(btnActualizaPres);
		
		Button btnRegresar = (Button)findViewById(R.id.btnAtrasAgregaCont);
		btnRegresar.setOnClickListener(btnRegresarPres);
		
		Button btnInicio = (Button)findViewById(R.id.btnInicioAgregaCont);
		btnInicio.setOnClickListener(btnInicioPres);
		
		Button btnCerrarSes = (Button)findViewById(R.id.btnCerrarSesionAgregaCont);
		btnCerrarSes.setOnClickListener(btnCerrarSesPres);		
		
	}
	
	private OnClickListener btnRegresarPres = new OnClickListener() {

		public void onClick(View v) {
			Intent intent = new Intent();
    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    		intent.putExtra("correoUsuario", bundle.getString("correoUsuario"));
    		intent.setClass(ActualizaContraUsu.this, PrincipalUsuario.class);
       		startActivity(intent);
    		finish();		
		}
	};
	
	private OnClickListener btnInicioPres = new OnClickListener() {

		public void onClick(View v) {
			Intent intent = new Intent();
    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    		intent.setClass(ActualizaContraUsu.this, Principal.class);
       		startActivity(intent);
    		finish();			
		}
	};
	
	private OnClickListener btnCerrarSesPres = new OnClickListener() {

		public void onClick(View v) {
			Intent intent = new Intent();
    		intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    		Variables.inicioSesion = false;
    		intent.setClass(ActualizaContraUsu.this, Principal.class);
       		startActivity(intent);
    		finish();			
		}
	};
	
	private OnClickListener btnActualizaPres = new OnClickListener() {
		
		public void onClick(View v) {
			if (valida() == true){
				actualizaContra();
			}
			else{
					Toast.makeText(ActualizaContraUsu.this, "Captura una dirección de correo válida", Toast.LENGTH_LONG).show();
				}
			}
	};
	
	private boolean valida(){
		EditText etNuevaContra = (EditText)findViewById(R.id.etContraActualizaContUsu);
		EditText etRepContra = (EditText)findViewById(R.id.etRepContraActualizaContUsu);
		if (!etNuevaContra.getText().toString().equals(etRepContra.getText().toString())){
			Toast.makeText(ActualizaContraUsu.this, "Las contraseñas no coinciden", Toast.LENGTH_LONG).show();
			return false;
		}
				
		return true;
	}
	

	private void actualizaContra(){
		String URL = "http://"+Variables.HOST+"/pags/servicios.php";
		SoapObject request;
		String SOAP_ACTION="capeconnect:servicios:serviciosPortType#actualizaContra"; 
		String METHOD_NAME = "actualizaContra";
		String NAMESPACE = "http://www.your-company.com/servicios.wsdl";
		EditText etContraActual = (EditText)findViewById(R.id.etContraActualActActualizaContUsu);
		EditText etNuevaContra = (EditText)findViewById(R.id.etContraActualizaContUsu);
		try{
			
			request = new SoapObject(NAMESPACE, METHOD_NAME); 
			request.addProperty("correoUsuario", bundle.getString("correoUsuario"));
			request.addProperty("contrasenia", Cifrado.getStringMessageDigest(etNuevaContra.getText().toString(),Cifrado.SHA256));
			request.addProperty("contraA", Cifrado.getStringMessageDigest(etContraActual.getText().toString(),Cifrado.SHA256));
			
			SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
			
			envelope.dotNet = false;
			
			envelope.setOutputSoapObject(request);
			

			HttpTransportSE aht = new HttpTransportSE(URL); 

			aht.call(SOAP_ACTION, envelope);
			
			SoapObject result =  (SoapObject) envelope.bodyIn;
            SoapPrimitive spResult = (SoapPrimitive) result.getProperty("result");
			Log.i("resultado",spResult.toString());
			
            if (Integer.parseInt(spResult.toString()) > 0){
            	Toast.makeText(ActualizaContraUsu.this, "Datos actualizados", Toast.LENGTH_LONG).show();
            }
            else{
            	Toast.makeText(ActualizaContraUsu.this, "No se pudo actualizar", Toast.LENGTH_LONG).show();
            }
            
	    } 
		catch (IOException e) {
			e.printStackTrace();
		} catch (XmlPullParserException e) {
			e.printStackTrace();
		}
		
		finally{
			
		}
		
	}

}
